It has become a customary contemporary practice to compress data to reduce usage of resources, for example, during data storage and data communication. However, problems arise when compressed data needs to be decompressed to be used. For example, a slow process of decompression of compressed video data may render the whole process useless, as more computational power and time may be wasted during decompression as compared to that saved during data transfer.
Moreover, multi-dimensional images, videos and/or audios are gaining increasing popularity. Such content demands correspondingly more efficient encoding and decoding methods in encoders and decoders (hereinafter referred to as ‘codecs’) to cope with associated increased quantities of data to be communicated and stored.
However, conventional codecs have been unable to meet these demands as of now. The conventional codecs process data in a one-dimensional (1D) manner, and have not been designed to compress multi-dimensional images, videos and/or audios.
Therefore, there exists a need for such a codec for compressing multi-dimensional image, video and/or audio data that is efficient as compared to the conventional codecs.
In a published article (“Designing a Compression Engine for Multidimensional Raster Data”; Author: Andreas Dehmel), there is described a compression engine for compressing multidimensional raster data. The engine consists of two layers: a bottom layer that corresponds to known contemporary stream-oriented compression techniques, and a top layer that corresponds to a template for multidimensional raster data. The top layer can only operate on tiles, and does not perform any compression itself, but merely transforms the data according to a data model before passing it on to an object of the bottom layer for actual compression.
In another published article (URL: https://en.wikipedia.org/wiki/Dictionary_coder), there is described a dictionary coder that operates by searching for matches between a text to be compressed and a set of strings contained in a data structure (namely, a “dictionary”) maintained by an encoder. When the encoder finds such a match, it substitutes a reference to the string's position in the data structure.
In a published European patent application EP2348690 A2 (“Methods and Apparatus for Compression and Network Transport of Data in Support of Continuous Availability of Applications”; Inventors: Patrick Terence Falls, Lyndon John Clarke, Wouter Senf; Applicant: Neverfail Group Ltd.), there are described methods and apparatus for compressing data for network transport in support of continuous availability of applications. A current instance of data is received in an input buffer. A candidate chunk of data is selected from the input buffer. A signature hash is then computed from a signature length range of data within the candidate chunk. A matching dictionary entry having a matching signature hash from a multi-tiered dictionary is identified. The matching dictionary entry identifies a location of a prior occurrence of a selected range of consecutive symbols including the signature length range of data within at least one of the current instance of data and a prior instance of data in the input buffer. A “dedupe”, namely de-duplication, processed representation of the instance of data is formed, wherein a dedupe item is substituted for the selected range of consecutive symbols if the selected range is verified as recurring. The dedupe item identifies the location of the prior occurrence of the selected range in accordance with the matching dictionary entry.